Computing devices are increasingly being used to enable real-time communications. As an example, users may use computing devices to participate in conversations with one or more other users. Participating in a conversation may involve sending or receiving electronic information, such as audio, video, or both. Participants in such conversations may also send or receive other media forms, such as documents, presentation slides, or any other form of electronic information. This multimedia electronic information, and particularly the audio and video information, may be sent using a protocol such as a Real-time Transport Protocol (“RTP”). RTP is an Internet proposed standard protocol whose specification, “RFC 3550,” is available as rfc/rfc3550.txt at the Internet Engineering Taskforce (IETF) web site. A specification for an Internet proposed standard relating to multi-participant conferences, “RFC 3551,” is available as rfc/rfc3551.txt at IETF's web site. These specifications are incorporated herein in their entirety by reference. RTP may be used with other protocols, such as a Session Initiation Protocol (“SIP”) and a Real-Time Streaming Protocol (“RTSP”). SIP may be used to provide signaling and other functions necessary for managing sessions between computing devices. RTP and RTSP may be used to carry information, such as audio and video information.
Audio and video information can be sent from a computing device to other computing devices using these (and other) protocols in a variety of network communications models, including unicast, multicast, broadcast and flooding communications models.
The unicast communications model, which is also known as point-to-point communications, may be used to send messages from a computing device to another computing device. In the unicast communications model, there may be a one-to-one association between a sender and a recipient. In a traditional unicast communications model, multiple participants may be unable to participate in a conversation simultaneously because, by definition, only two computing devices are exchanging messages. However, it may be possible to link the computing devices so that one of two connected computing devices in a unicast communications model forwards messages to a third computing device, thereby establishing two separate unicast connections. In such a case, two participants in a conversation talking simultaneously may be heard by a third participant as talking at different times because the third participant's computing device would receive audio information from the two other participants' computing devices separately. As an example, suppose A is participating in a conversation with B, and so A's computing device and B's computing device are connected. A second connection may be added between B's computing device and C's computing device so that C may also participate in the conversation. In the unicast communications model, C may hear B's voice followed by A's voice when A and B speak simultaneously. This could occur because messages containing audio information from A are sent to B's computing device, which forwards the messages to C's computing device without processing the messages. However, computing resources may limit the number of other computing devices to which a computing device may be connected simultaneously. Furthermore, if computing devices are connected to form a long chain, network delays may make information traveling from one end of the chain to the other untimely.
The multicast communications model may be used to send messages from a computing device to multiple other computing devices simultaneously. This communications model includes a forwarding computing device that receives messages from sending computing devices and forwards the messages to all connected recipient computing devices. Thus, there is a one-to-many association between the forwarding computing device and the multiple recipient computing devices. Because the forwarding computing device receives messages from and sends messages to the recipient computing devices, the multicast communications model may be unable to service large numbers of users simultaneously for reasons similar to those indicated above for the unicast communications model. Specifically, the forwarding computing device may have insufficient processing power or other computing resources to keep up with large a number of messages.
The broadcast communications model may also be used to send information from a broadcasting computing device to recipient computing devices simultaneously. In the broadcast communications model, the broadcasting computing device may not even need to be aware of recipient computing devices. In fact, messages sent by a sending computing device using the broadcast communications model may not even contain destination addresses of recipient computing devices, because the sending computing device either is not aware of recipient computing devices, or is not concerned with which computing devices will receive and process its messages. To broadcast a message, the broadcasting computing device may merely send messages on a network to which the broadcasting computing device is connected without regard as to whether the messages are ultimately received. Other computing devices connected to the network may choose to process or ignore the messages sent from the broadcasting computing device. As an example, if computing device A broadcasts a message in a network to which it is connected, computing device B, which is also connected to the network, may choose to process the message. In contrast, computing device C, which is connected to the same network, may choose to ignore the message broadcast by computing device A. In the broadcast communications model, messages sent from a computing device may not traverse all devices connected to the network. As examples, proxy servers, network addressed translators, routers, gateways, and other devices that route network traffic or interconnect networks may not process messages that do not contain a destination address. As a result, messages sent by the broadcasting computing device may not reach all intended recipients.
The flooding communications model may be used to send information from a sending computing device to every other computing device known to the sending computing device. Each such connected computing device may use a unicast communications model to exchange messages with the other. A problem with the flooding model is that the same information may arrive at a computing device from multiple devices, and the same information may travel through the system multiple times, or even infinitely, unless precautions are taken. As an example, if computing device A forwards messages to computing devices B and C, computing device B forwards messages to computing devices C and A, and computing device C forwards messages to computing devices A and B, then a message sent from computing device A would reach computing device B twice: once from computing device A directly, and again from computing device C, which forwards messages received from computing device A. This is an inefficient use of network resources.
The communications models presented above typically do not have a unified architecture. A unified architecture is one in which a computing device's role is pre-selected to be a client or server. Computing devices using non-unified architectures generally cannot dynamically change their roles to efficiently route messages.
The communications models presented above may route messages inefficiently when a large number of participants are connected, or may be unable to support large numbers of participants because of, e.g., computing resource constraints. An effective approach to efficiently using network resources to manipulate and route multimedia information for meaningful presentation to users of disparate computing devices would thus have significant utility.